home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / GNU_C++ / LIB / CFLIB-11.LZH / src / xfsl.h < prev   
Encoding:
C/C++ Source or Header  |  1998-11-03  |  10.7 KB  |  275 lines

  1. /*  @(#)xfsl.h, Dirk Haun/Stefan Rogel/Christoph Zwerschke, 21.07.1995
  2.  *  @(#)Aufruf eines systemweiten Fontselektors über den Cookie 'xFSL'
  3.  *
  4.  *  Revision 4 vom 21.07.1995
  5.  *
  6.  */
  7.  
  8. #if !defined(__xFSL__)
  9. #define __xFSL__
  10.  
  11. #define xFSL_REVISION  4
  12.  
  13.  
  14. /******** verwendete Strukturen ******************************************/
  15.  
  16. /*  Neuer Typ für Fontgröße in 1/65536 Punkt, gültig ab Speedo 4.0
  17.  */
  18. typedef long    fix31;
  19.  
  20.  
  21. /*  Angabe der Fontgröße,
  22.  *  wird über ein Kontrollflag (s.u.) unterschieden
  23.  */
  24.  
  25. union fsize
  26. {
  27.     short    size;            /* Fontgröße in Punkt */
  28.     fix31    size31;        /* Fontgröße in 1/65536 Punkt */
  29. };
  30.  
  31. typedef struct
  32. {
  33.     short    ev_mflags, ev_mbclicks, ev_bmask, ev_mbstate, ev_mm1flags,
  34.             ev_mm1x, ev_mm1y, ev_mm1width, ev_mm1height, ev_mm2flags,
  35.             ev_mm2x, ev_mm2y, ev_mm2width, ev_mm2height, ev_mtlocount,
  36.             ev_mthicount, ev_mwich, ev_mmox, ev_mmoy, ev_mmobutton, 
  37.             ev_mmokstate, ev_mkreturn, ev_mbreturn;
  38.     short    ev_mmgpbuf[8];
  39. } EVENT;
  40.  
  41. /*  allgemeine Fontinfo-Struktur
  42.  */
  43.  
  44. typedef struct
  45. {
  46.  short              fontid;         /* ID des Fonts                                      */
  47.  short              fonttype;        /* Typ des Fonts, siehe vqt_info()              */
  48.  char           *fontname;      /* Name des Fonts, siehe vqt_name()             */
  49.  union fsize    fontsize;      /* Fontgröße in pt oder fix31                     */
  50.  union fsize    fontwidth;      /* Breite in pt oder fix31                         */
  51.  char             trackkern;      /* Track-Kerning, siehe vst_kern()             */
  52.  char             pairkern;      /* Paar-Kerning, siehe vst_kern()              */
  53.  short              fontattr;        /* Attribute, siehe vst_attributes()          */
  54.  short              fontskew;        /* Neigung, siehe vst_skew()                      */
  55.  short              fontcol;        /* Farbe, siehe vst_color()                      */
  56.  short              backcol;        /* Text-Hintergrundfarbe                            */
  57.  short              halign;         /* horizontale Textausrichtung                  */
  58.  short              valign;         /* vertikale Textausrichtung                      */
  59.  short              rotation;        /* Textrotation in 1/10 Grad                      */
  60.  short              validtype;     /* Typ (V_CHAR_...) oder Mapping (MAP_...)  */
  61.  short             *validUBYTEs;    /* benötigte Zeichen oder 0L                      */
  62. } PFONTINFO;
  63.  
  64.  
  65. /*  ein Eintrag im Popup
  66.  */
  67.  
  68. typedef struct
  69. {
  70.  char           *entry;          /* Text des Popup-Eintrags                       */
  71.  PFONTINFO      *fontinfo;      /* Zeiger auf Fontinfo-Struktur                 */
  72.  unsigned short          fontflags;     /* erlaubte Fontarten                                */
  73.  long             funcflags;      /* Funktionsflags, nur für HuGo!                 */
  74. } xFSL_PENTRY;
  75.  
  76.  
  77. /*  xFSL-Parameter
  78.  */
  79.  
  80. typedef struct
  81. {
  82.  short              par_size;        /* Größe der xFSL_PAR-Struktur selbst          */
  83.  short              pfi_size;        /* Größe der PFONTINFO-Struktur                  */
  84.  unsigned long control;        /* Kontroll-Flags, s.u.                           */
  85.  const char   *headline;      /* Überschrift oder 0L                             */
  86.  const char   *example;       /* Beispieltext oder 0L                             */
  87.  const char   *helptext;      /* Text für den Hilfe-Button oder 0L          */
  88.  PFONTINFO      *font;           /* Zeiger auf Fontinfo, s.o.                     */
  89.  unsigned short  fontflags;     /* erlaubte Fontarten                                */
  90.  const char   *poptext;       /* Text vor dem Popup (nur Calvino) oder 0L */
  91.  short              num_entries;    /* Anzahl der Einträge (0..n)                    */
  92.  short              sel_entry;     /* Selektierter Eintrag (0..n-1)                */
  93.  xFSL_PENTRY  *popup;          /* Zeiger auf ein Popup oder 0L                 */
  94.  char           *helpinfo;      /* Rückgabe: Zeiger auf Hilfedatei & -seite */
  95. } xFSL_PAR;
  96.  
  97.  
  98. /******** Definition der Schnittstellen-Funktionen ***********************/
  99. /*
  100.  *  xFSL_INPUT xfsl_input      - vereinfachter Aufruf
  101.  *  xFSL_INIT xfsl_init       - Init-Aufruf : Dialog darstellen
  102.  *  xFSL_EVENT xfsl_event      - Event-Aufruf: Hauptschleife
  103.  *  xFSL_EXIT xfsl_exit       - Exit-Aufruf : Dialog abmelden
  104.  *
  105.  */
  106.  
  107. typedef short cdecl (*xFSL_INPUT)
  108. (
  109.  short         vdihandle,     /* Handle einer geöffneten VDI-Workstation  */
  110.  unsigned short      fontflags,     /* Flags, welche Fonts angeboten werden        */
  111.  const char    *headline,      /* Überschrift oder 0L (Default-Text)         */
  112.  short         *id,                /* Rückgabe: ID des gewählten Fonts           */
  113.  short         *size             /* Rückgabe: Größe des gewählten Fonts       */
  114. );
  115.  
  116. typedef short cdecl (*xFSL_INIT)
  117. (
  118.  short              vdihandle,     /* Handle einer geöffneten VDI-Workstation  */
  119.  xFSL_PAR      *xpar              /* Struktur mit weiteren Eingabeparametern  */
  120. );
  121.  
  122. typedef short cdecl (*xFSL_EVENT)
  123. (
  124.  short            xfsl_handle,    /* Handle von xfsl_init()                          */
  125.  EVENT               *event           /* Pure-C-Event-Struktur                          */
  126. );
  127.  
  128. typedef void cdecl (*xFSL_EXIT)
  129. (
  130.  short              xfsl_handle    /* Handle von xfsl_init()                          */
  131. );
  132.  
  133. typedef long cdecl (*xFSL_INFO)
  134. (
  135.  void                               /* keine Parameter                                  */
  136. );
  137.  
  138.  
  139. /******** xFSL-Struktur **************************************************/
  140.  
  141. /*  Der Cookie 'xFSL' zeigt auf die folgende Struktur
  142.  */
  143.  
  144. typedef struct
  145. {
  146.     unsigned long            xfsl;            /* Magic 'xFSL'                                      */
  147.     unsigned short            revision;    /* Revisionsnummer der Schnittstelle          */
  148.     unsigned long         product;        /* Kennung des Fontselektors, z.B. 'CLVN'    */
  149.     unsigned short            version;        /* Version des Fontselektors als BCD          */
  150.     xFSL_INPUT     xfsl_input; /* einfacher Aufruf                                 */
  151.     xFSL_INIT    xfsl_init;    /* Init-Aufruf                                         */
  152.     xFSL_EVENT     xfsl_event; /* Event-Aufruf                                      */
  153.     xFSL_EXIT    xfsl_exit;    /* Exit-Aufruf                                         */
  154.     xFSL_INFO    xfsl_info;    /* Info-Aufruf (Features abfragen)             */
  155. } xFSL;
  156.  
  157.  
  158. /******** Flags **********************************************************/
  159.  
  160. /*  Fontflags
  161.  */
  162.  
  163. #define FF_SYSTEM         0x0001 /* Systemfont (zusätzlich) anzeigen         */
  164. #define FF_MONOSPACED    0x0002 /* monospaced Fonts anzeigen                  */
  165. #define FF_PROPORTIONAL 0x0004 /* prop. Fonts anzeigen                         */
  166. #define FF_BITMAP         0x0008 /* alle Bitmapfonts anzeigen                  */
  167. #define FF_SPD             0x0010 /* Speedofonts                                     */
  168. #define FF_TTF             0x0020 /* TrueType-Fonts                                 */
  169. #define FF_PFB             0x0040 /* Type-1-Fonts                                     */
  170. #define FF_CFN             0x0080 /* Calamus-Fonts (nicht implementiert!)     */
  171. #define FF_VECTOR       (FF_SPD|FF_TTF|FF_PFB|FF_CFN) /* Vektorfonts anz. */
  172. #define FF_ALL           (FF_MONOSPACED|FF_PROPORTIONAL|FF_VECTOR|FF_BITMAP)
  173. #define FF_CHANGED        0x8000 /* Änderung erfolgt (im Popup)                 */
  174.  
  175. #define FF_VEKTOR         FF_VECTOR
  176. #define FF_MONO            FF_MONOSPACED
  177. #define FF_PROP            FF_PROPORTIONAL
  178.  
  179. /* Kontroll-Flags (werden nicht alle von allen Selektoren unterstützt)     */
  180. #define CC_WINDOW      0x0001 /* Fontselektor als Fenster                      */
  181. #define CC_APPMODAL     0x0002 /* Fontselektor ist applikations-modal         */
  182. #define CC_FIX31         0x0004 /* alle Größenangaben in 1/65536 Point       */
  183. #define CC_FAKESTYLE  0x0008 /* Schnitte simulieren (nur f. Bitmapfonts) */
  184. #define CC_CLOSER      0x0010 /* Fenster mit Closer, kein OK-Button         */
  185. #define CC_NOSIZE      0x0100 /* Größe nicht ändern                              */
  186. #define CC_NOCOLOR     0x0200 /* Farbe nicht ändern                              */
  187. #define CC_NOATTR      0x0400 /* Attribute nicht ändern                         */
  188. #define CC_NOWIDTH     0x0800 /* Breite nicht ändern                             */
  189. #define CC_NOKERN      0x1000 /* Kerning nicht ändern                             */
  190. #define CC_NOSKEW      0x2000 /* Skewing nicht ändern                             */
  191. #define CC_NOALIGN     0x4000 /* Ausrichtung nicht ändern                      */
  192. #define CC_NOROTATION 0x8000 /* Textrotation nicht ändern                     */
  193. #define CC_DFLTSIZE    0x10000 /* Schriftgröße "Default"                         */
  194. #define CC_INVSTYLE    0x20000 /* Attribut "Invers"                                 */
  195.  
  196. /* horizontale Textausrichtung (wie bei vst_alignment)                         */
  197. #define THA_LEFT              0  /* linksbündig                                         */
  198. #define THA_CENTER          1  /* zentriert                                          */
  199. #define THA_RIGHT           2  /* rechtsbündig                                      */
  200.  
  201. /* vertikale Textausrichtung (_nicht_ wie bei vst_alignment!)                 */
  202. #define TVA_BOTTOM          0  /* an der Text-Unterkante                         */
  203. #define TVA_CENTER          1  /* vertikal zentriert                              */
  204. #define TVA_TOP              2  /* an der Text-Oberkante                          */
  205.  
  206. /* Gruppen von erwünschten Zeichen im Font ('validtype' in PFONTINFO)     */
  207. #define V_CHAR_IND         -1  /* "egal"                                              */
  208. #define V_CHAR_ASC         -2  /* alle druckbaren ASCII-Zeichen (32-126)     */
  209. #define V_CHAR_PRT         -3  /* alle druckbaren Zeichen (32-255)             */
  210. #define V_CHAR_ALL         -4  /* wirklich alle Zeichen (0-255)                 */
  211.  
  212. /* Mapping (ebenfalls für 'validtype' in PFONTINFO)                             */
  213. #define MAP_DIRECT          0  /* "direktes" Mapping (alle Zeichen)          */
  214. #define MAP_ASCII           1  /* ASCII-Mapping, Bereich 0..255 (Default)  */
  215.  
  216. /* Fonttypen (erweitertes vqt_name ab SpeedoGDOS 5.0c/NVDI 3)                 */
  217. #define UNKNOWN_FONT 0x0000  /* Fonttyp unbekannt                                 */
  218. #undef BITMAP_FONT                /* in gemfast.h */
  219. #define BITMAP_FONT    0x0001  /* Bitmapfont                                         */
  220. #define SPEEDO_FONT    0x0002  /* Speedofont                                         */
  221. #define TT_FONT        0x0004  /* TrueType-Font                                     */
  222. #define PFB_FONT        0x0008  /* Type-1-Font (Postscript)                      */
  223. #define CFN_FONT        0x0010  /* Calamus-Font (nicht implementiert!)         */
  224. #define ANY_FONT        0x00FF  /* als Maske (Hibyte ausmaskieren)             */
  225.  
  226.  
  227. /*  Featureflags für xfsl_info
  228.  */
  229. #define XF_SIZE        0x0001  /* Größenänderung möglich                         */
  230. #define XF_COLOR        0x0002  /* Farbänderung möglich                             */
  231. #define XF_ATTR        0x0004  /* Attributänderung möglich                      */
  232. #define XF_WIDTH        0x0008  /* Breitenänderung möglich                         */
  233. #define XF_KERN        0x0010  /* Kerningänderung möglich                         */
  234. #define XF_SKEW        0x0020  /* Neigungsänderung möglich                      */
  235. #define XF_ALIGN        0x0040  /* Änderung der Ausrichtung möglich             */
  236. #define XF_ROTATION    0x0080  /* Textrotation möglich                             */
  237. #define XF_FIX31        0x0100  /* fix31-Unterstützung                             */
  238. #define XF_POPUP        0x0200  /* Popup-Unterstützung                             */
  239. #define XF_DRAGDROP    0x0400  /* Drag&Drop-Unterstützung                         */
  240. #define XF_MAPPING    0x0800  /* beherrscht Mapping                              */
  241.  
  242.  
  243. /*  Returncodes der xfsl_xxx-Aufrufe
  244.  *  (aufwärtskompatibel zu den UFSL-Rückgabewerten [markiert mit 'U'])
  245.  */
  246.  
  247. #define xFS_PARERROR      -9  /* Parameterfehler, z.B. Aufruf nach Rev. 3 */
  248. #define xFS_LOADERROR     -8  /* Fehler beim Nachladen des Overlays         */
  249. #define xFS_RES_ERROR     -7  /* Auflösung kleiner als 640*400 Punkte      */
  250. #define xFS_NO_HANDLE     -6  /* Kein Handle frei                                 */
  251. #define xFS_NO_WINDOW     -5  /* Kein Fenster frei                                 */
  252. #define xFS_NO_FONTS      -4  /* Keine Fonts geladen                          U */
  253. #define xFS_NO_FONTSIZE  -3  /* Fontgröße nicht identifizierbar          U */
  254. #define xFS_ACTIVE         -2  /* Fontselektor ist bereits aktiv           U */
  255. #define xFS_ERROR          -1  /* allgemeiner Fehler (Speichermangel)      U */
  256. #define xFS_STOP              0  /* <Abbruch> gewählt                              U */
  257. #define xFS_OK               1  /* <Ok> gewählt                                   U */
  258. #define xFS_HELP              2  /* Hilfe-Button angewählt                         */
  259. #define xFS_EVENT           3  /* AES-Event aufgetreten                          */
  260. #define xFS_POPUP           4  /* das User-Popup wurde angewählt              */
  261.  
  262.  
  263. /*  Schriftbreiten-Informationsstruktur,
  264.  *  wird nur für das Font-Protokoll (Nachricht XFONT_CHANGED) benötigt
  265.  */
  266.  
  267. typedef struct
  268. {
  269.   unsigned pair  : 1;     /* Pair-Kerning (0=nein, 1=ja)                    */
  270.   unsigned track : 2;     /* Tr.-K. (0=ohne,1=norm.,2=eng,3=sehr eng) */
  271.   unsigned width : 13;     /* Schriftbreite in pt (0..8191)                */
  272. } FW_INFO;
  273.  
  274. #endif
  275.